<?php
/**
 * Implenta las funciones necesarias para gestionar instalacion
 *
 * @author Daniel Cardoza, Gary Dos Santos, Freddy Rodriguez
 */
class DBInstalacionDAO {

    private $DBConn = null;

    public function  __construct() {
        $conexion = new conexion();
        $this->DBConn = $conexion->setConnect();
    }

     /**
     *Devuelve el precio del id de la instalacion que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CSI_PRECIO']
     * @return <bool> false
     * @test
     *
     */
    public function getPrecio( $id ) {
        $this->DBConn->consulta( "SELECT CSI_PRECIO
                            FROM costo_suministro_instalacion
                            WHERE CSI_ID = $id
                            AND CSI_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CSI_PRECIO'];
        } else {
            return false;
        }

    }

     /**
     *Devuelve el nombre del id de la instalacion que entra por parametro
     *
     * @param <int> $id
     * @return <string> $fila['CSI_NOMBRE']
     * @return <bool> false
     * @test
     *
     */
    public function getNombre( $id ) {
        $this->DBConn->consulta( "SELECT CSI_NOMBRE
                            FROM costo_suministro_instalacion
                            WHERE CSI_ID = $id
                            AND CSI_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CSI_NOMBRE'];
        } else {
            return false;
        }

    }

     /**
     *Devuelve el tipo del id de la instalacion que entra por parametro
     *
     * @param <int> $id
     * @return <int> $fila['CSI_TIPO']
     * @return <bool> false
     * @test
     *
     */
    public function getTipo( $id ) {
        $this->DBConn->consulta( "SELECT CSI_TIPO
                            FROM costo_suministro_instalacion
                            WHERE CSI_ID = $id
                            AND CSI_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1){
            $fila = $this->DBConn->extraer_registro();
            return $fila['CSI_TIPO'];
        } else {
            return false;
        }

    }


    /**
     * Setea un bloque con la informacion de la instalacion
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlock( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT *
                                FROM costo_suministro_instalacion
                                WHERE CSI_STATUS = 1
                                ORDER BY CSI_TIPO" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            
            if( $fila['CSI_TIPO'] == "1" ){
                $fila['CSI_TIPO'] = "Instalacion de ventanas, puertas o cristales";
            } else if( $fila['CSI_TIPO'] == "2" ){
                $fila['CSI_TIPO'] = "Suministro";
            } else if( $fila['CSI_TIPO'] == "3" ){
                $fila['CSI_TIPO'] = "Instalacion de accesorios";
            }

            $fila['CSI_PRECIO'] = number_format( $fila['CSI_PRECIO'], 2, ",", "." );
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

    /**
     * Setea un bloque con la informacion de la instalacion
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockSuministro( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT *
                                FROM costo_suministro_instalacion
                                WHERE CSI_TIPO = 2
                                AND CSI_STATUS = 1" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

    /**
     * Setea un bloque con la informacion de la instalacion
     *
     * @param <panel> $plantillaCON
     * @param <block> $block
     * @test
     */
    public function setBlockInstalacion( $plantillaCON , $block ) {
        $hBlock = $plantillaCON->setBlock( $block );
        $this->DBConn->consulta( "SELECT *
                                FROM costo_suministro_instalacion
                                WHERE CSI_TIPO = 3
                                AND CSI_STATUS = 1" );

        while ( $fila = $this->DBConn->extraer_registro() ) {
            $plantillaCON->add( $fila );
            $plantillaCON->concat( $hBlock );
        }

    }

     /**
     *Insertar una Instalacion en la base de datos y lo asigna al id del presupuesto
     * que se pasa por parametro
     *
     * @param <Cristal> $cristal
     * @param <int> $PTO_ID
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function setInstalacion( Instalacion $instalacion , $PTO_ID ) {
        $nombre = $instalacion->getNombre();
        $precio = $instalacion->getPrecio();
        $cantidad = $instalacion->getCantidad();
        $tipo = $instalacion->getTipo();
        $posicion = $instalacion->getPosicion();

        $this->DBConn->consulta( "INSERT INTO suministro_instalacion (SIN_NOMBRE,SIN_PRECIO, SIN_TIPO,SIN_CANTIDAD)
                                VALUES ('$nombre',$precio,$tipo,$cantidad) " );

        $this->DBConn->consulta( "SELECT SIN_ID 
                        FROM suministro_instalacion
                        WHERE SIN_NOMBRE = '$nombre'
                        AND SIN_PRECIO = $precio
                        AND SIN_CANTIDAD = $cantidad
                        AND SIN_TIPO = $tipo
                        AND SIN_STATUS = 1
                        ORDER BY SIN_ID DESC " );

        $fila = $this->DBConn->extraer_registro();
            $id = $fila[ 'SIN_ID' ];


        $subTotal = $instalacion->calcularSubTotal();
        $this->DBConn->consulta( "INSERT INTO detalle_presupuesto (DPR_SUB_TOTAL,DPR_PTO_ID,DPR_SIN_ID, DPR_POS)
                                VALUES ($subTotal, $PTO_ID, $id, '$posicion')" );

        if ( $this->DBConn->filasAfectadas() != -1){
            return true;
        } else {
            return false;
        }

    }

    /**
     *Actualiza una instalacion
     *
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function updateInstalacion() {
        extract($_GET);

        $CSI_PRECIO = (str_replace(".","",$CSI_PRECIO));
        $CSI_PRECIO = doubleval(str_replace(",",".",$CSI_PRECIO));

        $str =  "UPDATE costo_suministro_instalacion
                SET CSI_NOMBRE = '$CSI_NOMBRE',
                CSI_PRECIO = $CSI_PRECIO
                WHERE CSI_ID = $id" ;

        $this->DBConn->consulta($str);

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

    /**
     *Agrega un CostoTrabajos
     *
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function setCostoInstalacion() {
        extract($_GET);

        $CSI_PRECIO = (str_replace(".","",$CSI_PRECIO));
        $CSI_PRECIO = doubleval(str_replace(",",".",$CSI_PRECIO));

        $str =  "INSERT INTO costo_suministro_instalacion (CSI_NOMBRE, CSI_PRECIO, CSI_TIPO)
                VALUES ('$CSI_NOMBRE', $CSI_PRECIO, $CSI_TIPO)" ;

        $this->DBConn->consulta( $str );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

    /**
     *Elimina una Instalacion
     *
     * @param <int> $id
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function eliminarInstalacion($id) {

        $this->DBConn->consulta( "UPDATE costo_suministro_instalacion
                                SET CSI_STATUS = 0
                                WHERE CSI_ID = $id" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }

    /**
     *modifica todos los precios en un porcentaje dado
     *
     * @return <bool> true
     * @return <bool> false
     * @test
     *
     */
    public function updatePrecioPorPorcentaje() {
        extract($_GET);

        $porcentaje = $porcentaje/100;
        $this->DBConn->consulta( "UPDATE costo_suministro_instalacion
                                SET CSI_PRECIO = CSI_PRECIO + (CSI_PRECIO * $porcentaje)
                                WHERE CSI_STATUS = 1" );

        if ( $this->DBConn->filasAfectadas() != -1) {
            return true;
        } else {
            return false;
        }

    }
}
?>
